// 求组合数 快速幂
// 有 q(q <= 10000) 组询问，每组询问两个整数
// n, m(1 <= m <= n <= 1e5) 求 C(n, m) (mod 1e9 + 7) 的值
// 相关帖子 ：https://www.cnblogs.com/dx123/p/16770090.html
// 相关帖子 ：https://oi-wiki.org/math/combinatorics/combination/

#include <bits/stdc++.h>

using namespace std;

#define ll long long
const int MAXN = 100010;
const int MOD = 1e9 + 7;
// f[x] 存 x!(mod p) 的值
// f[x] 存 (x!)^(-1)(mod p) 的值
ll f[MAXN], g[MAXN];

// 快速幂
ll quickPow(ll a, ll b)
{
    ll ans = 1;
    while(b)
    {
        if(b & 1) ans = ans * a % MOD;
        a = a * a % MOD;
        b >>= 1;
    }
    return ans;
}

void init()
{
    f[0] = g[0] = 1;
    for(int i = 1; i < MAXN; ++i)
    {
        f[i] = f[i - 1] * i % MOD;
        g[i] = g[i - 1] * quickPow(i, MOD - 2) % MOD;
    }
}

ll C(ll n, ll m)
{
    return f[n] * g[m] % MOD * g[n - m] % MOD;
}

int main()
{
    int q, n, m;
    scanf("%d", &q);
    while(q--)
    {
        scanf("%d%d", &n, &m);
        printf("%lld\n", C(n, m));
    }

    return 0;
}